package com.jpress.ejb;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;


import com.jpress.model.Comentario;
import com.jpress.remote.ComentarioRemote;

@Stateless(mappedName="bean/comentario")
public class ComentarioEJB implements ComentarioRemote{

	@PersistenceContext(unitName="jpressEE")
	private EntityManager entityManager;
	
	@Override
	public void inserir(Comentario comentario) throws Exception{
		try {
			entityManager.persist(comentario);
		} catch (Exception e) {
			throw e;
		}
	}

	@Override
	public void atualizar(Comentario comentario) throws Exception {
		try {
			entityManager.merge(comentario);
		} catch (Exception e) {
			throw e;
		}
	}

	@Override
	public void excluir(Comentario comentario) throws Exception {
		try {
			entityManager.remove(comentario);
		} catch (Exception e) {
			throw e;
		}
	}

	@Override
	public List<Comentario> findAllByAutorCodigo(int autorCodigo){
		Query query = entityManager.createNamedQuery("Comentario.findAllByAutorCodigo");
		query.setParameter("autorCodigo", autorCodigo);
		@SuppressWarnings("unchecked")
		List<Comentario> resultado = (List<Comentario>) query.getResultList();
		return resultado;
	}
	
	@Override
	public List<Comentario> findAllByNoticiaCodigo(int noticiaCodigo){
		Query query = entityManager.createNamedQuery("Comentario.findAllByNoticiaCodigo");
		query.setParameter("noticiaCodigo", noticiaCodigo);
		@SuppressWarnings("unchecked")
		List<Comentario> resultado = (List<Comentario>) query.getResultList();
		return resultado;
	}	

	@Override
	public long getQuantidadeComentarios() {
		Query query = entityManager.createNamedQuery("Comentario.countComentarios");
		return (long) query.getSingleResult();
	}
}
